<?php
define("DEBUG", true);	//DEBUG版本
define("CHECK_CONF", true);	//校验配置
define("JUMP_WAIT", false);	//跳转前等待
define("RAND_TEST", false);	//随机测试模式
define('UPLOAD_DIR', "../upload/");
define('CAKEIMG_DIR', '../webroot/data/cake/');	//蛋糕图片上传位置
define('WEBDATA_DIR', '../webroot/data/');		//网站数据上传位置
define('ATTACK_DEF', 1); 	//简单有损防攻击设置
						//0 不开启 入库时所有字符串要逃逸处理，生成显示时所有字符串要html转义，麻烦低效，不现实
						//1 '"<>禁用，可防sql入侵和xss攻击，但不可上传html代码，如果需要，单独开放专用接口
						//2 ''禁用，html标签转义，数据存储转义之后的，数据有损但不影响显示

$mobile_allowed = array('18210283045', '15637809656');	//测试期间允许的手机号
define('AREA_COME', '深圳市南山区');				//取货地区
define('ADDR_COME', '龙珠四路本钢工贸大厦6楼北');	//取货地址

$conf = array(
	'logfile' => '../log/sys.log',
	'dielog' => '../log/die.log',
	'zfblog' => '../log/zfb.log',
	'rsa_pri' => '../include/rsa.key',
	'rsa_pub' => '../include/pub.key',
);

//邮件设置
$mail_conf = array(
	'host' => '',
	'username' => '',
	'from' => '',
	'password' => '',
);

//qf106 短信设置
$qf106_conf = array(
	'userid' => 0,
	'account' => '',
	'password' => '',
);

//zucp 短信设置
$zucp_conf = array(
	'sn' => '',
	'pwd' => '',
);

$g_ZFB_conf = array(
	'account' => '',
	'partner' => '',
	'key' => '',
);

$web_root = array(
	//'root'=>'127.0.0.1',		//cookie有效域，指定子站有效， 注释掉则域名独立生效
	'web'=>'../webroot/',
	'adm'=>'../adminroot/',
	'oas'=>'../oasroot/'
);

/**
 * 数据库配置
 *
 */
$DataBaseConf= array(
	'driver'		=> 'mysql',			// 数据连接类型
	'persistent'	=> false,			// 是否开启长连接
	'host'			=> 'localhost', 	// 数据库连接地址
	'port'			=> '3306',       	// 数据库端口
	'login'			=> 'our_web',     	// 用户名
	'password'		=> 'ccst', 	    	// 密码
	'database'		=> 'our_web',     	// 链接的数据库
	'prefix'		=> '',              // 数据表前缀,已经被废弃，必需为空
	'encoding'		=> 'utf8',          // 数据库编码类型
);

$DataBaseLogConf = array(
	'errorlogPath'	=> '../log/dbErrorLog.log', // 如果开启 errorlog, 且SQL执行如果报错，打入信息到此文件
	'querylogPath'	=> '../log/dbQueryLog.log', // 如果开启 querylog，执行的SQL打入到此问题
	'errorlog'		=> true,			// 是否开启错误日志
	'querylog'		=> true			    // 是否开启SQL记录日志
);

/*
 * 检测网站所有可能的异常配置，正式上线时，可以屏蔽检测以提高效率
 */
function CheckWeb()
{
	clearstatcache();
	//校验正则表达式
	if(preg_match(MOBILE_REG, "123") === false)
		SysDie("T_REG", "E_ERR", MOBILE_REG);
	if(preg_match(EMAIL_REG, "abc") === false)
		SysDie("T_REG", "E_ERR", EMAIL_REG);
	$rwDirs = array();
	//检测上传目录
	if(!is_dir(UPLOAD_DIR))
		SysDie("T_DIR", "E_ERR", UPLOAD_DIR);
	$rwDirs[UPLOAD_DIR] = true;
	if(!is_dir(CAKEIMG_DIR))
		SysDie("T_DIR", "E_ERR", CAKEIMG_DIR);
	$rwDirs[CAKEIMG_DIR] = true;
	global $conf;
	//获取读写文件集
	$rwFiles = array();
	$rwFiles[] = $conf['dielog'];
	$rwFiles[] = $conf['logfile'];

	global $DataBaseLogConf;
	if($DataBaseLogConf['querylog'])
	{
		if(empty($DataBaseLogConf['querylogPath']))
			SysDie("T_CONF", "E_UNSET", "querylogPath");
		$rwFiles[] = $DataBaseLogConf['querylogPath'];
	}
	if($DataBaseLogConf['errorlog'])
	{
		if(empty($DataBaseLogConf['errorlogPath']))
			SysDie("T_CONF", "E_UNSET", "errorlogPath");
		$rwFiles[] = $DataBaseLogConf['errorlogPath'];
	}
	//校验文件有读写权限
	foreach($rwFiles as $file)
	{
		if(!is_file($file))
			$rwDirs[dirname($file)] = true;	//加入目录校验
		else if((fileperms($file) & 0x0180) != 0x0180)
			SysDie("T_FILE", "E_NOWR", $file);
	}
	//校验读写目录
	foreach($rwDirs as $dir=> $i)
	{
		if((fileperms($dir) & 0x0180) != 0x0180)
			SysDie("T_DIR", "E_NOWR", $dir);
	}
	//校验加密
	$msg = "";
	$data = RsaEncrypt("rsa", $msg);
	if(!$data)
		SysDie("T_RSA", "E_RSAEN", $msg);
	if(RsaDecrypt($data, $msg) != "rsa")
		SysDie("T_RSA", "E_RSADE", $msg);
	return true;
}

